package com.ntd.study.base.classe;

/**
 * 构造方法相关内容
 * 构造器Constructor不允许被重写-构造器不是方法
 */
public class Constructor {
    /**
     * 默认构造器，即使不写也会存在
     * 但是如果写有其他的带参构造器，默认的无参构造器不写将会不存在
     */
    public Constructor() {
        System.out.printf("无参构造函数！");
    }

    /**
     * 带参构造函数
     *
     * @param param
     */
    public Constructor(String param) {
        System.out.printf("带参构造函数！");
        System.out.printf("参数:" + param);
    }

    public static void main(String[] args) {
        new Constructor(); // 无参构造函数使用
        new Constructor("test"); // 带参构造函数使用
    }

    class Parent {
        // 父类构造函数
        public Parent() {
            System.out.printf("父类构造函数！");
        }
    }

    class child extends Parent {
        // 子类构造函数
        public child() {
            super(); // 子类构造函数使用 super() 调用父类构造函数， super() 必须是子类构造函数的第一句
            System.out.printf("子类构造函数！");
        }
    }
}


